#include "Command.hpp"
#include "CommandServer.hpp"
#include <memory>

void Usage(std::string proc)
{
    std::cerr << "Usage: " << proc << " localport" << std::endl;
}

// "ls -a -l"
// std::string CommandExec(const std::string &commandstr)
// {
//     // 线程内部可以创建进程吗？可以！
//     // 1. 管道
//     // 2. fork
//     // 3. 命令分析，exec，1->pipe[1]
// }

int main(int argc, char *argv[])
{
    if (argc != 2)
    {
        Usage(argv[0]);
        exit(0);
    }
    uint16_t serverport = std::stoi(argv[1]);

    EnableConsoleLogStrategy();

    Command cmdobj;
    std::unique_ptr<CommandServer> tsvr = std::make_unique<CommandServer>(
        [&cmdobj](const std::string &cmd) -> std::string 
        {
            return cmdobj.Exec(cmd);
        }
        , serverport);
    tsvr->Init();
    tsvr->Start();
    return 0;
}